<?php

Loader::using("ext::libs::EmailsFactory");

/**
 * Description of Capacitaciones
 *
 * @author ETorres
 * @export Modules
 */
class Capacitaciones extends Module {
    public function index() {
        
        if(!$_SESSION['cev_user_logged_in']) {
            $this->route->redirect($this->route->moduleAction('Login', 'index', array('urlReturn' => $this->route->action('index'))));
        }
        
        $capacitaciones = $this->model->CevCapacitaciones->getFullCapacitaciones();
        
        $this->assign("capacitaciones", $capacitaciones);
        $this->assign('crearCapacitacion', $this->route->action('crearCapacitacion', array('NoFrame' => '1')));
        $this->assign('eliminarCapacitacion', $this->route->action('eliminarCapacitacion'));
        $this->assign('verInteresados', $this->route->action('verInteresados'));
        $this->assign('verItinerarios', $this->route->action('verItinerarios'));
        $this->assign('logout', $this->route->moduleAction('Login', 'doLogout'));
        $this->display();
    }
    
    public function inscripcion() {
        
        $capacitaciones = $this->model->CevCapacitaciones->getCapacitacionesDisponibles();
        $programas = $this->model->career->GetByTipoPrograma(0, false);
        
        $this->assign("programas", $programas);
        $this->assign('urlGetDiasDisponibles', $this->route->action('getDiasDisponibles', array('ajax'=>'1')));
        $this->assign('urlGetJornadasDisponibles', $this->route->action('getJornadasDisponibles', array('ajax'=>'1')));
        $this->assign("capacitaciones", $capacitaciones);
        $this->assign("action", $this->route->action("saveInscripcion"));
        $this->display();
    }
    
    public function getDiasDisponibles() {
        
        $idCapacitacion = $this->request->get('idCapacitacion');
        
        if(!empty ($idCapacitacion) && is_numeric($idCapacitacion)){
            echo json_encode($this->model->CevCapacitaciones->getDiasDisponibles($idCapacitacion));
        } else {
            echo 'null';
        }
    }
    
    public function getJornadasDisponibles() {
        
        $idCapacitacion = $this->request->get('idCapacitacion');
        $idDia = $this->request->get('idDia');
        
        if(!empty ($idCapacitacion) && !empty ($idDia) && is_numeric($idCapacitacion) && is_numeric($idDia)){
            echo json_encode($this->model->CevCapacitaciones->getJornadasDisponibles($idCapacitacion, $idDia));
        } else {
            echo 'null';
        }
    }


    public function crearCapacitacion() {
        if(!$_SESSION['cev_user_logged_in']) {
            $this->route->redirect($this->route->moduleAction('Login', 'index', array('urlReturn' => $this->route->action('crearCapacitacion'))));
        }        
        $this->assign("action", $this->route->action("saveCapacitacion"));
        
        $this->display();
    }
    
    private function loadBasicSaveData() {
        $this->addMessage(new Message("Se ha registrado exitosamente la operaci&oacute;n.", "", Message::SUCCESS));
    }
    
    public function saveCapacitacion() {
        $this->loadBasicSaveData();
        
        $capacitacion = $this->request->post("capacitacion");
        
        $this->model->CevCapacitaciones->crearCapacitacion($capacitacion);
        
        $this->route->redirect($this->route->action('index'));
    }
    
    public function saveInscripcion() {
        $this->loadBasicSaveData();
        
        $inscripcion = $this->request->post("inscripcion");
        
        $id = $this->model->CevCapacitaciones->crearInscripcion($inscripcion);
        
        $this->sendMail($id);
        
        $this->route->redirect($this->route->action('inscripcion'));
    }
    
    public function error() {
        $this->addMessage(new Message("Oops! Ha ocurrido un error.", "", Message::SUCCESS));
        $this->display();
    }


    public function eliminarCapacitacion() {
        $this->loadBasicSaveData();
        
        $idCapacitacion = $this->request->get('idCapacitacion');
        
        if(!empty ($idCapacitacion) && is_numeric($idCapacitacion)){
            $this->model->CevCapacitaciones->eliminarCapacitacionById($idCapacitacion);
        
            $this->route->redirect($this->route->action('index'));
        } else {
            $this->route->redirect($this->route->action('error'));
        }
    }
    
    public function verInteresados() {
        if(!$_SESSION['cev_user_logged_in']) {
            $this->route->redirect($this->route->moduleAction('Login', 'index', array('urlReturn' => $this->route->action('verInteresados'))));
        }
        $idCapacitacion = $this->request->get('idCapacitacion');
        
        if(!empty ($idCapacitacion) && is_numeric($idCapacitacion)){
            $interesados = $this->model->CevCapacitaciones->getInteresadosByIdCapacitacion($idCapacitacion);
            
            $this->assign('eliminarInteresado', $this->route->action('eliminarInteresado'));
            $this->assign('index', $this->route->action('index'));
            $this->assign('interesados', $interesados);
            $this->display();
        } else {
            $this->route->redirect($this->route->action('error'));
        }
    }
    
    public function verItinerarios() {
        if(!$_SESSION['cev_user_logged_in']) {
            $this->route->redirect($this->route->moduleAction('Login', 'index', array('urlReturn' => $this->route->action('verItinerarios'))));
        }
        $idCapacitacion = $this->request->get('idCapacitacion');
        
        if(!empty ($idCapacitacion) && is_numeric($idCapacitacion)){
            
            $itinerarios = $this->model->CevCapacitaciones->getFullItinerariosByIdCapacitacion($idCapacitacion);
            
            $this->assign('itinerarios', $itinerarios);
            $this->assign('eliminarItinerario', $this->route->action('eliminarItinerario'));
            $this->assign('index', $this->route->action('index'));
            $this->display();
        } else {
            $this->route->redirect($this->route->action('error'));
        }
    }
    
    public function eliminarItinerario() {
        $idItinerario = $this->request->get('idItinerario');
        $idCapacitacion = $this->request->get('idCapacitacion');
        
        if(!empty ($idItinerario) && is_numeric($idItinerario) && !empty ($idCapacitacion) && is_numeric($idCapacitacion)){
            $this->model->CevCapacitaciones->eliminarItinerarioById($idItinerario);
            
            $this->route->redirect($this->route->action('verItinerarios', array('idCapacitacion' => $idCapacitacion)));
        } else {
            $this->route->redirect($this->route->action('error'));
        }
    }
    
    public function eliminarInteresado() {
        $idInteresado = $this->request->get('idInteresado');
        $idCapacitacion = $this->request->get('idCapacitacion');
        
        if(!empty ($idInteresado) && is_numeric($idInteresado) && !empty ($idCapacitacion) && is_numeric($idCapacitacion)){
            $this->model->CevCapacitaciones->eliminarInteresadoById($idInteresado);
        
            $this->route->redirect($this->route->action('verInteresados', array('idCapacitacion' => $idCapacitacion)));
        } else {
            $this->route->redirect($this->route->action('error'));
        }
    }
    
    private function sendMail($idInscrito) {
        
        $destinatarios = array();
        $CEV = array();
        
        $inscripcion = $this->model->CevCapacitaciones->getInteresadoById($idInscrito);
        
        array_push($destinatarios, $inscripcion["email"]);
        array_push($CEV, "cev@usbctg.edu.co");
        
        $itinerario = $this->model->CevCapacitaciones->getItinerarioById($inscripcion["id_itinerario"]);
        
        $capacitacion = $this->model->CevCapacitaciones->getCapacitacionById($itinerario["id_capacitacion"]);
        $dia = $this->model->CevCapacitaciones->getDiaById($itinerario["id_dia"]);
        $jornada = $this->model->CevCapacitaciones->getJornadaById($itinerario["id_jornada"]);
        
        $mensajeInscrito = array();
        $mensajeCEV = array();
                
        /*
         * Mensaje de notificaciones generico
         * 
         * [0] Mensaje
         * 
        */
        
        array_push($mensajeInscrito, "Su inscripcion a la Capacitacion " . $capacitacion['nombre'] . " el dia " . $dia['nombre'] . " en la jornada " .  $jornada['nombre'] . " ha sido realizada. ¡Gracias!");
        array_push($mensajeCEV, $inscripcion["nombre"] . " se ha inscrito a la capacitacion " . $capacitacion['nombre'] . " el dia " . $dia['nombre'] . " en la jornada " .  $jornada['nombre'] . ".");
        
        EmailsFactory::SendMail(8, $destinatarios, $mensajeInscrito);
        EmailsFactory::SendMail(8, $CEV, $mensajeCEV);
        
    }
}

?>
